home *** CD-ROM | disk | FTP | other *** search
- #!../blt_wish -f
-
- if [file exists ../library] {
- set blt_library ../library
- }
- option add *Calendar.Frame.borderWidth 2
- option add *Calendar.Frame.relief raised
- option add *Calendar.Label.font *-Helvetica-Bold-R-*-14-*
- option add *Calendar*background steelblue
- option add *Calendar*foreground white
-
- set monthInfo(Jan) { January 31 }
- set monthInfo(Feb) { February 28 }
- set monthInfo(Mar) { March 31 }
- set monthInfo(Apr) { April 30 }
- set monthInfo(May) { May 31 }
- set monthInfo(Jun) { June 30 }
- set monthInfo(Jul) { July 31 }
- set monthInfo(Aug) { August 31 }
- set monthInfo(Sep) { September 30 }
- set monthInfo(Oct) { October 31 }
- set monthInfo(Nov) { November 30 }
- set monthInfo(Dec) { December 31 }
-
- set abbrDays { Sun Mon Tue Wed Thu Fri Sat }
-
- proc Calendar { weekday day month year } {
- global monthInfo abbrDays
-
- set wkdayOffset [lsearch $abbrDays $weekday]
- if { $wkdayOffset < 0 } {
- error "Invalid week day \"$weekday\""
- }
- set dayOffset [expr ($day-1)%7]
- if { $wkdayOffset < $dayOffset } {
- set wkdayOffset [expr $wkdayOffset+7]
- }
- set wkday [expr $wkdayOffset-$dayOffset]
- if { [info commands .calendar] == ".calendar" } {
- destroy .calendar
- }
- frame .calendar -class Calendar
- if ![info exists monthInfo($month)] {
- error "Invalid month \"$month\""
- }
- set info $monthInfo($month)
- label .calendar.month \
- -text "[lindex $info 0] $year" \
- -font *-New*Century*Schoolbook-Bold-R-*-18-*
- blt_table .calendar .calendar.month 1,1 -cspan 7
-
- set cnt 1
- frame .calendar.weekframe -relief sunken -bd 2
- blt_table .calendar .calendar.weekframe 2,0 -columnspan 8 -fill both
- foreach dayName $abbrDays {
- set name [string tolower $dayName]
- label .calendar.$name \
- -text $dayName \
- -font *-New*Century*Schoolbook-Bold-R-*-14-*
- blt_table .calendar .calendar.$name 2,$cnt -pady 2 -padx 2
- incr cnt
- }
- blt_table column .calendar configure all -padx 4
- blt_table column .calendar configure 0 -width 0
- blt_table row .calendar configure 2 -pady 4
- set week 0
- set numDays [lindex $info 1]
- for { set cnt 1 } { $cnt <= $numDays } { incr cnt } {
- label .calendar.day${cnt} -text $cnt
- if { $cnt == $day } {
- .calendar.day${cnt} configure -relief raised
- }
- if { $wkday == 7 } {
- incr week
- set wkday 0
- }
- incr wkday
- blt_table .calendar .calendar.day${cnt} $week+3,$wkday -fill both
- }
- button .calendar.quit -command { destroy . } -text {Quit}
- blt_table .calendar \
- .calendar.quit $week+4,6 -cspan 2 -ipadx 10 -pady 4 -ipady 2 -anchor e
- pack append . .calendar {fill expand frame center}
- }
-
- set date [exec date]
- scan $date {%s %s %d %*s %*s %s} weekday month day year
-
- Calendar $weekday $day $month $year
- wm minsize . 0 0
-